package com.hqyj.freemovie.front.util;

import cn.hutool.core.util.IdUtil;
import cn.hutool.crypto.SecureUtil;
import cn.hutool.crypto.digest.DigestAlgorithm;
import cn.hutool.crypto.digest.Digester;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;

import javax.annotation.PostConstruct;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

@Component
public class MyUtil {


    private static String md5Salt; //M5摘要加密使用的盐。采用MD5+盐，对用户的密码进行加密。

    @Value("${freemovie.md5-salt}")
    private String salt;

    @PostConstruct
    private void initMyUtil(){
        MyUtil.md5Salt =  this.salt;
    }
    //检查是否是合法的手机号码
    public static boolean isMobileNumber(String mobileStr) {
        Pattern p = Pattern.compile("^((13[0-9])|(15[^4])|(18[0-9])|(17[0-9])|(19[0-9])|(147))\\d{8}$");
        Matcher m = p.matcher(mobileStr);
        return m.matches();
    }

    //随机生成一个用户名
    public static String generateRandomUsername(){
        return IdUtil.simpleUUID();
    }

    //使用MD5+盐的摘要算法对注册用户的密码进行摘要加密
    public static String encodePasswordByMd5Salt(String password) throws Exception{
        Digester md5 = new Digester(DigestAlgorithm.MD5);
        //给MD5添加了盐
        md5.setSalt(md5Salt.getBytes("utf-8"));
        return md5.digestHex(password);
    }

    public static void main(String[] args) {

        //String s = "12345678901"; //是不是手机号码，不是
        /*
        String s = "14729762008";

        if (MyUtil.isMobileNumber(s)) {
            System.out.println("是手机号码");
        } else {
            System.out.println("不是手机号码");
        }*/

        //随机生成一百个用户名，肯定不重复

        /*
        for(int i=0;i<100;i++){
            System.out.println(generateRandomUsername());
        }*/

        String news = "[环球网报道]据路透社报道，加拿大公共卫生署周四表示，加将从3月17日起取消对来自中国大陆、中国香港和澳门的航空旅客的强制性新冠检测要求。\n" +
                "　　报道称，加拿大公共卫生署在一份声明中说，与其他几个国家一样，加拿大在 1 月份对来自中国的旅客实施了临时检测措施，此后的相关数据表明新冠病毒情况有所改善。\n" +
                "　　加拿大公共卫生署在声明中还补充了具体时间为3月17日美东部时间凌晨 00：01分。声明也提醒旅客，建议个人在乘坐飞机、机场或其他拥挤的室内环境时佩戴结构良好且合身的口罩。\n" +
                "　　另据声明内容,自加拿大和其他国家于今年1月实施临时边境措施以来，来自中国、国际社会的数据以及在加进行的废水采样中，没有发现任何新的令人担忧的变种病毒。此外，中加两国疫情形势均有所好转，加拿大医疗卫生体系保持稳定。\n" +
                "　　据此前报道，加拿大联邦政府2022年12月31日表示，自2023年1月5日起自中国入境旅客必须持48小时核酸阴性证明。据加拿大电视公司新闻网（CTV News）1月2日报道，多位加拿大专家对此表示，加拿大政府的要求无助于阻止新冠病毒传播。\n" +
                "\n";

        //对新闻进行MD5的摘要，生成一个长度固定的MD5的摘要值。

        String digestStr = SecureUtil.md5(news);



        System.out.println(digestStr);
    }
}


